package com.settlement.system.model.vo;

import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.format.DateTimeFormat;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 原始抖音订单导入对象
 *
 * @author haoxr
 * @since 2022/4/10
 */
@Data
public class TbBillImportVo {
    /**
     * 入账时间
     */
    @ExcelProperty(value = "入账时间")
    @DateTimeFormat("yyyy-MM-dd HH:mm:ss")
    private LocalDateTime settlementTime;

    /**
     * 支付宝交易号
     */
    @ExcelProperty(value = "支付宝交易号")
    private String orderNo;

    /**
     * 支付宝流水号
     */
    @ExcelProperty(value = "支付宝流水号")
    private String flowNo;

    /**
     * 商户订单号
     */
    @ExcelProperty(value = "商户订单号")
    private String sellerNo;

    /**
     * 账务类型
     */
    @ExcelProperty(value = "账务类型")
    private String settlementType;

    /**
     * 收入（+元）
     */
    @ExcelProperty(value = "收入（+元）")
    private String incomeAmount;

    /**
     * 支出（-元）
     */
    @ExcelProperty(value = "支出（-元）")
    private String payAmount;

    /**
     * 账户余额（元）
     */
    @ExcelProperty(value = "账户余额（元）")
    private String balance;

    /**
     * 服务费（元）
     */
    @ExcelProperty(value = "服务费（元）")
    private String serviceAmount;

    /**
     * 支付渠道
     */
    @ExcelProperty(value = "支付渠道")
    private String channel;

    /**
     * 签约产品
     */
    @ExcelProperty(value = "签约产品")
    private String signProduct;

    /**
     * 对方账户
     */
    @ExcelProperty(value = "对方账户")
    private String buyAccount;

    /**
     * 对方名称
     */
    @ExcelProperty(value = "对方名称")
    private String buyName;

    /**
     * 银行订单号
     */
    @ExcelProperty(value = "银行订单号")
    private String bankNo;

    /**
     * 商品名称
     */
    @ExcelProperty(value = "商品名称")
    private String productName;

    /**
     * 备注
     */
    @ExcelProperty(value = "备注")
    private String remark;

    /**
     * 业务基础订单号
     */
    @ExcelProperty(value = "业务基础订单号")
    private String businessBaseNo;

    /**
     * 业务订单号
     */
    @ExcelProperty(value = "业务订单号")
    private String businessNo;

    /**
     * 业务账单来源
     */
    @ExcelProperty(value = "业务账单来源")
    private String businessBillSource;

    /**
     * 业务描述
     */
    @ExcelProperty(value = "业务描述")
    private String businessRemark;

    /**
     * 付款备注
     */
    @ExcelProperty(value = "付款备注")
    private String payRemark;


    public static List<String> getColumns(){
        List<String> columns = new ArrayList<>();
        columns.add("入账时间");
        columns.add("支付宝交易号");
        columns.add("支付宝流水号");
        columns.add("商户订单号");
        columns.add("账务类型");
        columns.add("收入（+元）");
        columns.add("支出（-元）");
        columns.add("账户余额（元）");
        columns.add("服务费（元）");
        columns.add("支付渠道");
        columns.add("签约产品");
        columns.add("对方账户");
        columns.add("对方名称");
        columns.add("银行订单号");
        columns.add("备注");
        columns.add("业务基础订单号");
        columns.add("业务订单号");
        columns.add("业务账单来源");
        columns.add("业务描述");
        columns.add("付款备注");
        return columns;
    }

    public static Map<String, String> getKeyMap(){
        Map<String, String> map = new HashMap<>();
        map.put("入账时间", "settlementTime");
        map.put("支付宝交易号", "orderNo");
        map.put("支付宝流水号", "flowNo");
        map.put("商户订单号", "sellerNo");
        map.put("账务类型", "settlementType");
        map.put("收入（+元）", "incomeAmount");
        map.put("支出（-元）", "payAmount");
        map.put("账户余额（元）", "balance");
        map.put("服务费（元）", "serviceAmount");
        map.put("支付渠道", "channel");
        map.put("签约产品", "signProduct");
        map.put("对方账户", "buyAccount");
        map.put("对方名称", "buyName");
        map.put("银行订单号", "bankNo");
        map.put("商品名称", "productName");
        map.put("备注", "remark");
        map.put("业务基础订单号", "businessBaseNo");
        map.put("业务订单号", "businessNo");
        map.put("业务账单来源", "businessBillSource");
        map.put("业务描述", "businessRemark");
        map.put("付款备注", "payRemark");
        map.put("账单月份", "billMonth");
        return  map;
    }
}
